9 research outputs found

    Data Management in Microservices: State of the Practice, Challenges, and Research Directions

    Full text link
    We are recently witnessing an increased adoption of microservice architectures by the industry for achieving scalability by functional decomposition, fault-tolerance by deployment of small and independent services, and polyglot persistence by the adoption of different database technologies specific to the needs of each service. Despite the accelerating industrial adoption and the extensive research on microservices, there is a lack of thorough investigation on the state of the practice and the major challenges faced by practitioners with regard to data management. To bridge this gap, this paper presents a detailed investigation of data management in microservices. Our exploratory study is based on the following methodology: we conducted a systematic literature review of articles reporting the adoption of microservices in industry, where more than 300 articles were filtered down to 11 representative studies; we analyzed a set of 9 popular open-source microservice-based applications, selected out of more than 20 open-source projects; furthermore, to strengthen our evidence, we conducted an online survey that we then used to cross-validate the findings of the previous steps with the perceptions and experiences of over 120 practitioners and researchers. Through this process, we were able to categorize the state of practice and reveal several principled challenges that cannot be solved by software engineering practices, but rather need system-level support to alleviate the burden of practitioners. Based on the observations we also identified a series of research directions to achieve this goal. Fundamentally, novel database systems and data management tools that support isolation for microservices, which include fault isolation, performance isolation, data ownership, and independent schema evolution across microservices must be built to address the needs of this growing architectural style

    Desenvolvimento de sistemas big data: um mapeamento sistemático da literatura

    No full text
    De acordo com um estudo realizado em 2015, a atual quantidade de dados gerados nas organizações levou a um maior investimento em desenvolvimento de infraestrutura e data analytics. Entretanto, a dimensão do desenvolvimento de aplicações de software é subestimada. Com o objetivo de habilitar o desenvolvimento de aplicações para usuários-finais utilizando big data, o campo da engenharia de software apresenta um conjunto sólido de diretrizes para avaliar diferentes domínios de aplicação, processos de desenvolvimento e engenharia de requisitos. É fundamental a investigação de que esforços tem sido empregados no desenvolvimento de sistemas big data com o objetivo de prover a pesquisadores e profissionais informações que habilitem maiores atividades de pesquisa. Esse estudo objetiva inspecionar a pesquisa existente na área da engenharia de software para big data com o objetivo de identificar abordagens empregadas, estratégias de desenvolvimento e identificar as pesquisas atuais. Um mapeamento sistemático foi realizado baseado em um conjunto de 8 questões de pesquisa. No total, 305 estudos, datados de 2011 a 2016, foram avaliados. Nós propusemos um novo protocolo e recuperamos um conjunto de estudos primários, identificamos uma lista de abordagens e analisamos o atual estado na construção de sistemas de software big data, identificando tendências e lacunas onde novos esforços de estudo podem ser investidos. Os resultados desse mapeamento sistemático podem suportar pesquisadores e profissionais em escolhas de desenvolvimento e pesquisa futuraAccording to study made in 2015, the current amount of data generated in organizations have led to an increased investment in infrastructure development and data analytics. However, the applications software development side is underestimated. In order to enable the development of end-user applications utilizing big data, software engineering field presents a solid set of directives to assess different application domains, development processes and requirements engineering. It is fundamental to investigate what efforts in big data systems development have been employed in order to provide both researchers and practitioners with information that enable further research activities. This study aims at surveying existing research on big data software engineering in order to identify approaches employed, development strategies, and identifying current research. A systematic mapping study was performed based on a set of 8 research questions. In total, 305 studies, dated from 2011 to 2016, were evaluated. We proposed a novel protocol and retrieved a set of primary studies, identified a list of approaches, and analyzed the current state on building big data software systems, identifying trends and gaps where new research efforts can be invested. The results of this systematic mapping can support researchers and practitioners in development choices and future researc

    Cataloging dependency injection anti-patterns in software systems

    No full text
    Context: Dependency Injection (DI) is a commonly applied mechanism to decouple classes from their dependencies in order to provide higher modularization. However, bad DI practices often lead to negative consequences, such as increasing coupling. Although white literature conjectures about the existence of DI anti-patterns, there is no evidence on their practical relevance, usefulness, and generality. Objective: The objective of this study is to propose and evaluate a catalog of Java DI anti-patterns and associated refactorings. Methodology: We reviewed existing reported DI anti-patterns in order to analyze their completeness. The limitations found in literature motivated proposing a novel catalog of 12 DI anti-patterns. We developed a tool to statically analyze the occurrence level of the candidate DI anti-patterns in both open-source and industry projects. Next, we survey practitioners to assess their perception on the relevance, usefulness, and their willingness on refactoring anti-pattern instances of the catalog. Results: Our static code analyzer tool showed a relative recall of 92.19% and high average precision. It revealed that at least 9 different DI anti-patterns appeared frequently in the analyzed projects. Besides, our survey confirmed the perceived relevance of the catalog and developers expressed their willingness to refactor instances of anti-patterns from source code. Conclusion: The catalog contains Java DI anti-patterns that occur in practice and that are perceived as useful. Sharing it with practitioners may help them to avoid such anti-patterns, thus improving source-code quality.Comment: Version accepted at The Journal of Systems & Softwar
    corecore